import os
import pickle

import jieba
import numpy as np
from keras.models import load_model
from keras.preprocessing.sequence import pad_sequences

os.environ["CUDA_VISIBLE_DEVICES"] = "-1"


def predict(data, tokenizer_addr, model_addr):
    """
    预测的核心模块
    :param data: 待预测的数组
    :param tokenizer_addr: 分词器模型路径
    :param model_addr: 模型路径
    :return:预测结果（数字）
    """
    # 分词器导入
    with open(tokenizer_addr, 'rb') as handle:
        tokenizer = pickle.load(handle)
    # 数据分割
    sequences = []
    for i in data:
        cut_data = ' '.join(jieba.cut(i))
        s = sum(list(tokenizer.texts_to_sequences_generator(cut_data)), [])
        sequences.append(s)
    # 补齐/切分数据
    sequences = pad_sequences(sequences, maxlen=300)
    # 模型导入
    model = load_model(model_addr)
    # 预测数据
    a = model.predict(sequences)
    return np.argmax(a, axis=1)


if __name__ == '__main__':
    # 数据导入
    data = [
        "驾驶感不错，还是多功能方向盘，又轻便，操控起来又简单，行驶中车身还是非常稳当，开着没有发飘的感觉。",
        "空间算是这个车的硬伤了吧，怎么说呢，开车的会比坐车的舒服一点，前排的视野很好，空间也大，后排相对就有点小了，满座的情况下活动距离少，短途还没有多大的事，长途身体就很吃亏了。后备箱的空间还可以，能放不少的东西，有时候坐车的人少，还能占用后排空间，出行没有负重的感觉很轻松。,这个车的起步慢，只有等到行驶中速度提升到涡轮介入的那一刻才感觉到快了起来，而且急加速的时候换挡之间顿挫感比较明显。,油耗也不高，我觉得还是很正常的表现，目前平均下来7.6个油左右。,小轿车在操控这一块还是非常好的，方向盘的设计就比较不错，轻便为主，开着没有一点压力，转弯的力度上也好，单手打也没有压力，行驶中也很稳定，转弯没有侧倾感。,内饰做工很好，材质用料都很有档次，屏幕也大气。,舒适性：座椅偏硬，新车异味很重开了段时间好点了。,外观很帅气，车头车尾设计都很时尚，漆面的亮度也高。"
    ]
    tokenizerAddr = 'E:\\Develop\\py\\汽车文本分析\\qingGan_Tokenizer.pickle'
    modelAddr = 'E:\\Develop\\py\\汽车文本分析\\情感.h5'
    res = predict(data, tokenizerAddr, modelAddr)
    print(res)
